//
// 作者：AKA_GGbond
// 时间：2025/7/17
// 邮箱：evain_wl@163.com
//

#ifndef ESMU_W_SLIDER_H
#define ESMU_W_SLIDER_H

#include <QAbstractSlider>

class W_Slider : public QAbstractSlider
{
    Q_OBJECT

public:
    explicit W_Slider(QWidget *parent = nullptr);
    virtual ~W_Slider();

    void setRange(qreal nMin, qreal nMax);
    qreal value()const;

    // 设置填充部分的颜色
    void setFillValueColor(const QColor& color);
    // 设置没有填充部分的颜色
    void setUnfillValueColor(const QColor& color);
    //设置当前值颜色
    void setValueTextColor(const QColor& color);

protected:
    virtual void paintEvent(QPaintEvent *event)override;
    virtual void mouseMoveEvent(QMouseEvent *event)override;
    virtual void mousePressEvent(QMouseEvent *event)override;
    virtual void mouseReleaseEvent(QMouseEvent *event)override;

private:
    void updateValue(qreal nCurValue);
    void initValue();
    void initUISetting();

signals:
    void sigValueChanged(qreal nValue);

public slots:
    void slotSetValue(qreal nValue);

private:
    struct stRange
    {
        qreal m_nMin{0.0};
        qreal m_nMax{100.0};
    }m_range;

    qreal m_nCurValue{0};
    qreal m_dbCurPercent{0.0};

    qreal m_dbRadius{10.0};
    bool m_bPressed{false};

    // 文字的颜色， 比如： "#FF00FF"
    QColor m_valueTextColor{"#111111"};
    // 当前数值划过的数值滑块颜色
    QColor m_currentValueColor{"#39CE99"};
    // 没有划过的数值滑块颜色
    QColor m_invalidValueColor{"#BBBBBB"};

};


#endif //ESMU_W_SLIDER_H
